Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

χρήση της DialogResult μέσα σε κλάση

Îåêßíçóå áðü ôï ìÝëïò sakis_drm. Τελευταία δημοσίευση από το μέλος Panagiotis Kefalidis στις 25-08-2009, 22:11. Υπάρχουν 6 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  25-08-2009, 00:44 53261

    χρήση της DialogResult μέσα σε κλάση

    Αν χρησιμοποιήσω την παρακάτω εντολή μέσα σε μια φόρμα όλα βαίνουν καλώς.
    DialogResult = MessageBox.Show(strMsg, "", MessageBoxButtons.YesNo);
    Αν ρίξω την εντολή αυτή μέσα σε μία κλάση τότε μου βγάζει κόκκινη γραμμή κάτω απο το DialogResult. Το hint αναφέρει "Enum name is not valid at this point"

    using System.Windows.Forms;
    namespace WindowsFormsApplication
    {
        class Class1
        {
            public void meth()
            {
            string strMsg = "";
            DialogResult = MessageBox.Show(strMsg, "", MessageBoxButtons.YesNo);
            }
        }
    }
    Έχει κανείς καμιά ιδέα, τι μπορεί να το ενοχλεί;

  •  25-08-2009, 01:05 53262 σε απάντηση της 53261

    Απ: χρήση της DialogResult μέσα σε κλάση

    η λύση είναι...
    DialogResult dr = MessaBox.Show
    Παρόλαυτα αν γνωρίζει κανείς για ποιό λόγο μέσα στην κλάση συμπεριφέρεται διαφορετικά θα βοηθούσε να διελευκανθεί η κατάσταση.

  •  25-08-2009, 07:46 53265 σε απάντηση της 53262

    Απ: χρήση της DialogResult μέσα σε κλάση

    Επειδή η φόρμα έχει ένα property με το ίδιο όνομα, DialogResult DialogResult.
  •  25-08-2009, 12:08 53266 σε απάντηση της 53262

    Απ: χρήση της DialogResult μέσα σε κλάση

    sakis_drm:
    η λύση είναι...
    DialogResult dr = MessaBox.Show

    Παρόλαυτα αν γνωρίζει κανείς για ποιό λόγο μέσα στην κλάση συμπεριφέρεται διαφορετικά θα βοηθούσε να διελευκανθεί η κατάσταση.

    Αποκλείεται καταρχήν να έπαιζε κι ο άλλος τρόπος με τον οποίο το έγγραφες (DialogResult = MessageBox.Show), γιατί πολύ απλά το DialogResult είναι ένας τύπος και κάθε τύπος χρειάζεται μια μεταβλητή για να κρατήσεις την τιμή του. Το "dr" στην περίπτωσή σου είναι η μεταβλητή που θα κρατήσει την τιμή που θα επιστρέψει η MessageBox.Show γιαυτό και λειτουργεί.


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
  •  25-08-2009, 12:25 53267 σε απάντηση της 53266

    Απ: χρήση της DialogResult μέσα σε κλάση

    Όπως απάντησα ήδη, ο άλλος τρόπος φυσικά και έπαιζε γιατί η φόρμα έχει property με όνομα DialogResult και τύπου DialogResult.
  •  25-08-2009, 21:31 53276 σε απάντηση της 53267

    Απ: χρήση της DialogResult μέσα σε κλάση

    Παναγιώτη, ο κώδικας στη φόμα είναι ο εξής:
            private void btnExit_Click(object sender, EventArgs e)
            {
                string strMsg = "Θέλετε να γίνει επανεκκίνιση της εφαρμογής " + Application.ProductName + " ?";
                DialogResult = MessageBox.Show(strMsg, "", MessageBoxButtons.YesNoCancel);
                switch (DialogResult)
                {
                    case DialogResult.Yes:
                        Application.Restart();
                        break;
                    case DialogResult.No:
                        Application.Exit();
                        break;
                }
            }
    και παίζει κανονικά.  Θέλω να σημειώσω πως το DialogResult εδώ στη φόρμα είναι με μαύρο χρώμα, ενώ το αντίστοιχο στην κλάση είναι κυανό: DialogResult

  •  25-08-2009, 22:11 53277 σε απάντηση της 53276

    Απ: χρήση της DialogResult μέσα σε κλάση

    Ναι είχε δίκιο ο Nullvoid ότι παίζει.. απλά άλλο εννοούσα εγώ όταν είπα οτι δεν παίζει. Έλεγα οτι δεν λειτουργεί έτσι αυτο το οποίο θέλεις να κάνεις (να πάρεις την τιμή δηλαδή) και να αποφασίσεις μετά τι θα τρέξεις απο κώδικα, γιατί έτσι άλλαζες πάντα την τιμή του property της φόρμας κάτι το οποίο μπορεί να λειτουργεί σαν κώδικας, αλλά είναι λάθος σαν λογική σ'αυτή την περίπτωση.


    Παναγιώτης Κεφαλίδης

    "Για να επιτύχεις, θα πρέπει το πάθος σου για την επιτυχία να είναι μεγαλύτερο απο τον φόβο σου για την αποτυχία"

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Παρακαλώ διαβάστε τους όρους χρήσης.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems